package com.itheima.edu.info.manager.service;

import com.itheima.edu.info.manager.dao.BaseStudentDao;
import com.itheima.edu.info.manager.dao.OtherStudentDao;
import com.itheima.edu.info.manager.dao.StudentDao;
import com.itheima.edu.info.manager.domain.Student;
import com.itheima.edu.info.manager.factory.StudentFactory;

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;

/*
    业务员类
        1. 这里的所有方法【功能】都是给客服用
        2. 如果某些业务涉及到要对数据仓库的数据进行访问的话,那么需要在业务员类中操作库管对象
        3. 该类的核心作用是用于处理业务逻辑,例如: 判断录入的id是否存在
 */
public class StudentService {

    private BaseStudentDao dao = StudentFactory.getStudentDao();

    //业务员中的添加学生功能
    public boolean addStudent(Student stu) {
        return dao.addStudent(stu);

    }

    //业务员中的判断学号是否存在功能
    public boolean isExists(String id) {
        Student[] students = dao.findAllStudents();
        boolean flag = false;
        for (int i = 0; i < students.length; i++) {
            if (students[i] != null & students[i].getSid().equals(id)) {
                flag = true;
                break;
            }
        }
        return flag;
    }

    //业务员中的查找所有学生功能
    public Student[] findAllStudents() {
        Student[] students = dao.findAllStudents();
        boolean flag = false;
        for (int i = 0; i < students.length; i++) {
            if (students[i] != null) {
                flag = true;
                break;
            }
        }
        if (flag) {
            Arrays.sort(students, (o1, o2) -> {
                if (o1 != null & o2 != null) {
                    return o1.getSid().compareTo(o2.getSid());
                } else {
                    return 0;
                }
            });
            return students;
        } else {
            return null;
        }
    }

    //业务员中的删除学生功能
    public void deleteStudentById(String delId) {
        dao.deleteStudentId(delId);
    }

    //业务员中的修改学生功能
    public void updateStudentById(String updateId, Student newStu) {
        dao.updateStudentById(updateId, newStu);
    }
}
